package com.example.springboot.controller;

// 导入所需的类和库
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.Notice;
import com.example.springboot.service.NoticeService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

// 定义一个Spring Boot控制器类，处理公告相关的请求
@RestController
@RequestMapping("/notice")
public class NoticeController {

    // 注入NoticeService，用于处理公告相关业务逻辑
    @Resource
    NoticeService noticeService;

    /**
     * 公告添加
     */
    @PostMapping("/add")
    public Result<?> add(@RequestBody Notice notice) {
        // 调用服务层方法添加新公告
        int i = noticeService.addNewNotice(notice);
        // 检查添加操作是否成功
        if (i == 1) {
            // 如果成功，返回成功的响应
            return Result.success();
        } else {
            // 如果失败，返回失败的响应
            return Result.error("-1", "添加失败");
        }
    }

    /**
     * 公告更新
     */
    @PutMapping("/update")
    public Result<?> update(@RequestBody Notice notice) {
        // 调用服务层方法更新公告
        int i = noticeService.updateNewNotice(notice);
        // 检查更新操作是否成功
        if (i == 1) {
            // 如果成功，返回成功的响应
            return Result.success();
        } else {
            // 如果失败，返回失败的响应
            return Result.error("-1", "更新失败");
        }
    }

    /**
     * 公告删除
     */
    @DeleteMapping("/delete/{id}")
    public Result<?> delete(@PathVariable Integer id) {
        // 调用服务层方法删除公告
        int i = noticeService.deleteNotice(id);
        // 检查删除操作是否成功
        if (i == 1) {
            return Result.success();
        } else {
            // 如果失败，返回失败的响应
            return Result.error("-1", "删除失败");
        }
    }

    /**
     * 公告查找
     */
    @GetMapping("/find")
    public Result<?> findPage(@RequestParam(defaultValue = "1") Integer pageNum,
                              @RequestParam(defaultValue = "10") Integer pageSize,
                              @RequestParam(defaultValue = "") String search) {
        // 调用服务层方法进行分页查询
        Page page = noticeService.find(pageNum, pageSize, search);
        // 检查查询操作是否成功
        if (page != null) {
            // 如果成功，返回成功的响应，并包含分页数据
            return Result.success(page);
        } else {
            // 如果失败，返回失败的响应
            return Result.error("-1", "查询失败");
        }
    }

    /**
     * 首页公告展示
     */
    @GetMapping("/homePageNotice")
    public Result<?> homePageNotice() {
        // 调用服务层方法获取首页展示的公告列表
        List<?> list = noticeService.homePageNotice();
        // 检查获取操作是否成功
        if (list != null) {
            // 如果成功，返回成功的响应，并包含公告列表
            return Result.success(list);
        } else {
            // 如果失败，返回失败的响应
            return Result.error("-1", "首页公告查询失败");
        }
    }
}
